/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package concoursbelote;

import java.util.ArrayList;
import java.util.Scanner;
import sun.security.krb5.internal.crypto.Crc32CksumType;

/**
 * 
 * @author Guillaume
 *
 */
public class Main 
{
	public static ArrayList<Bar> repertoireBar = new ArrayList<Bar>();
	public static Integer indexBar = new Integer(-1);
	

	/**
                   *Point d'entrée du programme 
	 * @author Guillaume
	 * @param args
	 */
	public static void main(String[] args) 
	{	
		GenerationAutomatique.initialisationListe();
		afficherMenu(); 
	}
	
	/**
	 * Affiche le menu général
	 * @author Shehu
	 */
	public static void afficherMenu()    
	{
		System.out.println("********************* MENU *********************");
		System.out.println("		1: Créer un bar");
		System.out.println("		2: Administrer un bar"); 
		System.out.println("		3: Gérer un bar");
                System.out.println("		4: Jouer une partie de belote");
		System.out.println("		5: Quitter");
		
		Scanner option = new Scanner(System.in);
		String recupOption = new String();
		recupOption = option.next();
		try
		{
			if(Integer.parseInt(recupOption) >5 || Integer.parseInt(recupOption) <0)
			{
				System.out.println("Veuillez entrer un choix de menu correct");
				Main.afficherMenu();
			}
		}
		catch(NumberFormatException e)
		{
			System.out.println("Veuillez entrer un choix de menu correct");
			Main.afficherMenu();
		}
		switch(Integer.parseInt(recupOption))
		{
			case 1:
				Main.afficherSousMenu(recupOption);
				break;
			case 2:
                                Erreur.pasDeBar();
				Main.afficherSousMenu(recupOption);
				break;
			case 3:
                                Erreur.pasDeBar();
				Main.choixBar();
                                Administration.administrationGenerale();
				break;
                        case 4:
                            Erreur.pasDeBar();
                            Main.choixBar();
                            if(Administration.currentBar.serveur.isEmpty())
                            {
                                System.out.println("Il n'y a pas de serveur dans le bar choisi. Qui va vous arbitrer?");
                                Main.afficherMenu();
                            }
                            Erreur.verifClient();
                            Belote jeu = new Belote () ;
                            jeu.leJeu();
                            break;
			case 5:
                            System.exit(0);
		}
	}
	
	/**
	 * Affiche les sous-menu et commande les créations de bars, de serveurs ou de clients suivant les choix utilisateurs
	 * @author Shehu
	 * @param option
	 */
	public static void afficherSousMenu(String option)
	{
            Scanner option2 = new Scanner(System.in);
            String recupOption2 = new String();
            switch(Integer.parseInt(option))
            {
                case 1:
                    System.out.println("1: Création personnalisée");
                    System.out.println("2: Génération automatique");
                    recupOption2 = option2.next();
                    Main.gestionExceptionMenu(recupOption2, option);
                    if(Integer.parseInt(recupOption2) == 1)
                    {
                        Creation.creationBar();
                    }
                    else if(Integer.parseInt(recupOption2) == 2)
                    {
                        GenerationAutomatique.generationBar();
                    }
                    else
                    {
                        System.out.println("Veuillez entrer un choix de menu correct!");
                        Main.afficherSousMenu(option);
                    }
                    break;
                case 2:
                    Main.choixBar();
                    Main.menuAdministration();
                    break;
            }
		/*System.out.println("1: Création personnalisée");
		System.out.println("2: Génération automatique");
		Scanner option2 = new Scanner(System.in);
		String recupOption2 = new String();
		recupOption2 = option2.next();
		try
		{
			if(Integer.parseInt(recupOption2) >2 || Integer.parseInt(recupOption2) <0 )
			{
				System.out.println("Veuillez entrer un choix de menu correct");
				afficherSousMenu(option);
			}
			
			switch(Integer.parseInt(option))
			{
				case 1:
					if(Integer.parseInt(recupOption2) == 1)
					{
						Creation.creationBar();
					}
					else if(Integer.parseInt(recupOption2) == 2)
					{
						GenerationAutomatique.generationBar();
					}
					break;
				case 2:
					if(Integer.parseInt(recupOption2) == 1)
					{
						Creation.creationServeur();
					}
					else if(Integer.parseInt(recupOption2) == 2)
					{
						GenerationAutomatique.generationServeur();
					}
					break;		
				case 3:
					if(Integer.parseInt(recupOption2) == 1)
					{
						Creation.creationClient();
					}
					else if(Integer.parseInt(recupOption2) == 2)
					{
						GenerationAutomatique.generationClient();
					}
			}
		}
		catch(NumberFormatException e)
		{
			System.out.println("Veuillez entrer un choix de menu correct");
			Main.afficherSousMenu(option);
		}*/
		
	}
	
	/**
	 * Permet à l'utilisateur de choisir le bar qu'il souahite administrer, dans lequel il souhaite embaucher un serveur ou autorisé un client à entrer.
	 * @author Shehu
	 */
	public static void choixBar()
	{
		Scanner in = new Scanner(System.in);
		String result = new String();
		
		System.out.println("Selectionner le bar souhaité: ");
		for(int i = 0; i<Main.repertoireBar.size(); i++)
		{
			System.out.println(Main.repertoireBar.get(i).getNom());
		}
		result = in.nextLine();
		for(int i=0; i<Main.repertoireBar.size(); i++)
		{
			if(Main.repertoireBar.get(i).getNom().equalsIgnoreCase(result))
			{
				Main.indexBar = i;
				if(Administration.currentBar.mesBoissons.isEmpty())
				{
					Boissons.creationBoissons();
				}
				break;
			}
			else
			{
				System.out.println("Le bar spécifié n'existe pas");
				Main.choixBar();
			}
		}
		Erreur.barComplet();
        }
        
        /**
         * Permet de gérer les exceptions lors du choix utilisateurs du menu
         * @author Guillaume
         * @param recupOption2
         * @param option 
         */
        public static void gestionExceptionMenu(String recupOption2, String option)
        {
            try
            {
		if(Integer.parseInt(recupOption2) >2 || Integer.parseInt(recupOption2) <0 )
		{
			System.out.println("Veuillez entrer un choix de menu correct");
			afficherSousMenu(option);
		}
            }
            catch(NumberFormatException e)
            {
                System.out.println("Veuillez entrer un choix de menu correct");
		Main.afficherSousMenu(option);
            }
        }
        
        public static void menuAdministration()
        {
            Scanner in = new Scanner(System.in);
            String choixAdmin = new String();
            System.out.println("1:   Création manuelle d'un serveur");
            System.out.println("2:   Génération automatique d'un serveur");
            System.out.println("3:   Création manuelle d'un client");
            System.out.println("4:   Génération automatique d'un client");
            System.out.println("5:   Revenir au menu");
            System.out.println("6:   Quitter");
            choixAdmin = in.next();
            try
            {
                if(Integer.parseInt(choixAdmin) > 6 || Integer.parseInt(choixAdmin) < 0)
                {
                    System.out.println("Veuillez entrer un choix de menu correct");
                    Main.menuAdministration();
                }
            }
            catch(NumberFormatException e)
            {
                System.out.println("Veuillez entrer un choix de menu correct");
                Main.menuAdministration();
            }
            switch(Integer.parseInt(choixAdmin))
            {
                case 1:
                    Creation.creationServeur();
                case 2:
                    GenerationAutomatique.generationServeur();
                case 3:
                    Creation.creationClient();
                case 4:
                    GenerationAutomatique.generationClient();
                case 5:
                    Main.afficherMenu();
                case 6:
                    System.exit(0);
            }
        }
}
